home *** CD-ROM | disk | FTP | other *** search
/ Clickx 75 / Clickx 75.iso / software / expressionweb / expressionwebv3 / ExpressionWeb_en.exe / Setup / WeConen.cab / xweb.ACTIONS.SETTEXT.JS.en < prev    next >
Encoding:
Text File  |  2009-06-09  |  18.0 KB  |  457 lines

  1. ∩╗┐// SharedLib v1.0
  2.  
  3. /////////////////////////////////////////////////////////////////////
  4. //
  5. // encodeTextArea
  6. //
  7. //    Description:
  8. //        This function encodes JavaScript embedded within text,
  9. //        line breaks, backslashes and escaped curly braces.
  10. //
  11. //  Arguments:
  12. //        String : Text to be encoded
  13. //
  14. //  Return Value:  
  15. //        String : Encoded Text
  16. //
  17. /////////////////////////////////////////////////////////////////////
  18.  
  19. function encodeTextArea(sAreaText)
  20. {
  21.     sAreaText = sAreaText.replace(/\'/g, '\\\'');
  22.     nLength = sAreaText.length;
  23.     nBegLoc = sAreaText.indexOf('\{');
  24.     while (nBegLoc >= 0)
  25.     {
  26.         if (sAreaText.substr(nBegLoc-1,1) != '\\')
  27.         {
  28.             nEndLoc = findMatchingBracket(nBegLoc, sAreaText);
  29.             if (nEndLoc >= 0)
  30.             {
  31.                 sFuncCall = sAreaText.substring(nBegLoc+1,nEndLoc);
  32.                 sFuncCall = sFuncCall.replace(/\\\'/g, '\'');
  33.                 sAreaText = sAreaText.substr(0,nBegLoc) + '\' + (' + sFuncCall + ') + \'' + sAreaText.substr(nEndLoc+1,nLength-nEndLoc);
  34.                 nEndLoc = nEndLoc + (sAreaText.length-nLength);
  35.                 nLength = sAreaText.length;
  36.             }
  37.         }
  38.         else
  39.         {
  40.             nEndLoc = nBegLoc + 1;
  41.         }
  42.         sNextString=sAreaText.substring(nEndLoc,nLength);
  43.         nBegLoc = sNextString.indexOf('\{');
  44.         if (nBegLoc >= 0)
  45.             nBegLoc=nBegLoc + nEndLoc;
  46.     }
  47.     var pos=0;
  48.     out = "\\"; // replace this
  49.     add = "\\\\"; // with this
  50.     while (sAreaText.substring(pos,sAreaText.length).indexOf(out)>-1)
  51.     {
  52.         pos= pos+(sAreaText.substring(pos,sAreaText.length)).indexOf(out);
  53.         if (sAreaText.substr((pos + out.length),1) != '\'')
  54.             sAreaText = "" + (sAreaText.substring(0, pos) + add + 
  55.                     sAreaText.substring((pos + out.length), sAreaText.length));
  56.  
  57.         pos = pos + add.length;
  58.     }
  59.     //replace carriage returns and linefeed with a literal \n
  60.     while (sAreaText.search("\n") >0)
  61.     {
  62.         sAreaText=sAreaText.replace("\n","\\n");
  63.         sAreaText=sAreaText.replace("\r","\\r");
  64.     }
  65.     sAreaText = sAreaText.replace(/\\\{/g, '\{');
  66.     sAreaText = sAreaText.replace(/\\\}/g, '\}');
  67.     return sAreaText;
  68. }
  69.  
  70. /////////////////////////////////////////////////////////////////////
  71. //
  72. // decodeTextArea
  73. //
  74. // Description:
  75. //    This function decodes JavaScript embedded within text,
  76. //    line breaks, backslashes and escaped curly braces. If
  77. //    you encode and then decode a string you should have 
  78. //    the same string returned.
  79. //
  80. // Arguments:
  81. //    String : Text to be decoded
  82. //
  83. // Return Value:  
  84. //    String : decoded Text
  85. //
  86. /////////////////////////////////////////////////////////////////////
  87.  
  88. function decodeTextArea(sAreaText)
  89. {
  90.     while (sAreaText.search("\\\\n") >=0)
  91.     {
  92.         nLoc=sAreaText.search("\\\\n");
  93.         sAreaText=sAreaText.substring(0,nLoc) + '\n' + sAreaText.substring(nLoc+2,sAreaText.length);
  94.     }
  95.     while (sAreaText.search("\\\\r") >=0)
  96.     {
  97.         nLoc=sAreaText.search("\\\\r");
  98.         sAreaText=sAreaText.substring(0,nLoc) + '\r' + sAreaText.substring(nLoc+2,sAreaText.length);
  99.     }
  100.     sAreaText = sAreaText.replace(/\' \+ \(/g, '\{');
  101.     sAreaText = sAreaText.replace(/\) \+ \'/g, '\}');
  102.     sAreaText = sAreaText.replace(/\\\'/g, '\'');
  103.     var pos=0;
  104.     out = "\\\\"; // replace this
  105.     add = "\\"; // with this
  106.     while (sAreaText.substring(pos,sAreaText.length).indexOf(out)>-1)
  107.     {
  108.         pos= pos+(sAreaText.substring(pos,sAreaText.length)).indexOf(out);
  109.         sAreaText = "" + (sAreaText.substring(0, pos) + add + 
  110.                     sAreaText.substring((pos + out.length), sAreaText.length));
  111.         pos = pos + add.length;;
  112.     }
  113.     return sAreaText;
  114. }
  115.  
  116. /////////////////////////////////////////////////////////////////////
  117. //
  118. // isTextBoxTextValid
  119. //
  120. // Description:
  121. //    This function determines if any javascript within text is
  122. //    encoded correctly.  This means making sure braces are matched,
  123. //    not nested and there are no semicolons within braces.
  124. //
  125. // Arguments:
  126. //    String  : Text with javascript
  127. //
  128. // Return Value:  
  129. //    Boolean : If the javascript is correct
  130. //
  131. /////////////////////////////////////////////////////////////////////
  132.  
  133. function isTextBoxTextValid(sText)
  134. {
  135.     //Remove Commented Braces
  136.     sSearchText = sText.replace(/\\\{/g, '');
  137.     sSearchText = sSearchText.replace(/\\\}/g, '');
  138.     nLength = sSearchText.length;
  139.     nBegLoc = sSearchText.indexOf('\{');
  140.     nEndLoc = sSearchText.indexOf('\}');
  141.     while ((nBegLoc >= 0) || (nEndLoc >=0))
  142.     {
  143.         if (nEndLoc < nBegLoc)
  144.         {
  145.             alert(L_MATCHEDBRACES_ErrorMessage);
  146.             return false;
  147.         }
  148.         if ((nEndLoc >=0) &&  (nBegLoc <0))
  149.         {
  150.             alert(L_MATCHEDBRACES_ErrorMessage);
  151.             return false;
  152.         }
  153.         nEndLoc = findMatchingBracket(nBegLoc, sSearchText);
  154.             
  155.         if (nEndLoc >= 0)
  156.         {
  157.             sFuncCall = sSearchText.substring(nBegLoc+1,nEndLoc);
  158.             if((sFuncCall.indexOf('\{')>=0)||(sFuncCall.indexOf('\}')>=0))
  159.             {
  160.                 alert(L_MATCHEDBRACES_ErrorMessage);
  161.                 return false;
  162.             }
  163.             if(sFuncCall.indexOf(';')>=0)
  164.             {
  165.                 alert(L_SEMICOLONS_ErrorMessage);
  166.                 return false;
  167.             }
  168.             if(sFuncCall.length == 0)
  169.             {
  170.                 alert(L_EMPTYBRACES_ErrorMessage);
  171.                 return false;
  172.             }
  173.         }
  174.         else
  175.         {
  176.             alert(L_MATCHEDBRACES_ErrorMessage);
  177.             return false;
  178.         }
  179.         nBegLoc = sSearchText.substring(nEndLoc,nLength).indexOf('\{');
  180.         nEndLoc = sSearchText.substring(nEndLoc+1,nLength).indexOf('\}');
  181.         if (nBegLoc >= 0)
  182.         {
  183.             nBegLoc=nBegLoc + nEndLoc;
  184.         }
  185.     }
  186.     return true;
  187. }
  188.  
  189. /////////////////////////////////////////////////////////////////////
  190. //
  191. // findMatchingBracket
  192. //
  193. // Description:
  194. //    This function finds a matching curly brace when braces 
  195. //    are nested.
  196. //
  197. // Arguments:
  198. //    Integer : Location of the brace to be matched
  199. //    String  : Text with braces
  200. //
  201. // Return Value:  
  202. //    Integer : The position of the matching brace
  203. //
  204. /////////////////////////////////////////////////////////////////////
  205.  
  206. function findMatchingBracket(nLoc, sText)
  207. {
  208.     var nLocBegin;
  209.     var nLocEnd;
  210.     var nBegins=0;
  211.     var nReturn=-1;
  212.     var nLength=sText.length;
  213.     var nSubStringLength;
  214.     var sUnparsedString=sText.substring(nLoc+1, nLength);
  215.     var sParsedString=sText.substr(0,nLoc+1);
  216.     
  217.     nSubStringLength = sUnparsedString.length;
  218.     while(nSubStringLength > 0)
  219.     {            
  220.         nLocBegin=sUnparsedString.indexOf('\{'); 
  221.         nLocEnd=sUnparsedString.indexOf('\}');
  222.         if ((nLocBegin < nLocEnd) && (nLocBegin != -1))
  223.         {
  224.             nBegins++;
  225.         
  226.             sUnparsedString=sText.substring(sParsedString.length+nLocBegin+1, nLength);
  227.             sParsedString = sText.substring(0,sParsedString.length+nLocBegin+1);
  228.         }
  229.         else
  230.         {                                    
  231.             if (nBegins == 0)
  232.             {
  233.                 return sParsedString.length + nLocEnd;
  234.             }
  235.             
  236.             nBegins--;
  237.         
  238.             sUnparsedString=sText.substring(sParsedString.length+nLocEnd+1, nLength);
  239.             sParsedString = sText.substring(0,sParsedString.length+nLocEnd+1);
  240.         }
  241.         
  242.         nSubStringLength = sUnparsedString.length;
  243.     }
  244.     return nReturn;
  245. }
  246.  
  247. // SIG // Begin signature block
  248. // SIG // MIIasgYJKoZIhvcNAQcCoIIaozCCGp8CAQExCzAJBgUr
  249. // SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
  250. // SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
  251. // SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFPOzlH0PjY7C
  252. // SIG // 1GKtPL7bWEAdEYcioIIVkzCCA8QwggMtoAMCAQICEEe/
  253. // SIG // GZXfjVJGQ/fbbUgNMaQwDQYJKoZIhvcNAQEFBQAwgYsx
  254. // SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
  255. // SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
  256. // SIG // EwZUaGF3dGUxHTAbBgNVBAsTFFRoYXd0ZSBDZXJ0aWZp
  257. // SIG // Y2F0aW9uMR8wHQYDVQQDExZUaGF3dGUgVGltZXN0YW1w
  258. // SIG // aW5nIENBMB4XDTAzMTIwNDAwMDAwMFoXDTEzMTIwMzIz
  259. // SIG // NTk1OVowUzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZl
  260. // SIG // cmlTaWduLCBJbmMuMSswKQYDVQQDEyJWZXJpU2lnbiBU
  261. // SIG // aW1lIFN0YW1waW5nIFNlcnZpY2VzIENBMIIBIjANBgkq
  262. // SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqcqypMzNIK8K
  263. // SIG // fYmsh3XwtE7x38EPv2dhvaNkHNq7+cozq4QwiVh+jNtr
  264. // SIG // 3TaeD7/R7Hjyd6Z+bzy/k68Numj0bJTKvVItq0g99bbV
  265. // SIG // XV8bAp/6L2sepPejmqYayALhf0xS4w5g7EAcfrkN3j/H
  266. // SIG // tN+HvV96ajEuA5mBE6hHIM4xcw1XLc14NDOVEpkSud5o
  267. // SIG // L6rm48KKjCrDiyGHZr2DWFdvdb88qiaHXcoQFTyfhOpU
  268. // SIG // wQpuxP7FSt25BxGXInzbPifRHnjsnzHJ8eYiGdvEs0dD
  269. // SIG // mhpfoB6Q5F717nzxfatiAY/1TQve0CJWqJXNroh2ru66
  270. // SIG // DfPkTdmg+2igrhQ7s4fBuwIDAQABo4HbMIHYMDQGCCsG
  271. // SIG // AQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29j
  272. // SIG // c3AudmVyaXNpZ24uY29tMBIGA1UdEwEB/wQIMAYBAf8C
  273. // SIG // AQAwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL2NybC52
  274. // SIG // ZXJpc2lnbi5jb20vVGhhd3RlVGltZXN0YW1waW5nQ0Eu
  275. // SIG // Y3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB
  276. // SIG // /wQEAwIBBjAkBgNVHREEHTAbpBkwFzEVMBMGA1UEAxMM
  277. // SIG // VFNBMjA0OC0xLTUzMA0GCSqGSIb3DQEBBQUAA4GBAEpr
  278. // SIG // +epYwkQcMYl5mSuWv4KsAdYcTM2wilhu3wgpo17IypMT
  279. // SIG // 5wRSDe9HJy8AOLDkyZNOmtQiYhX3PzchT3AxgPGLOIez
  280. // SIG // 6OiXAP7PVZZOJNKpJ056rrdhQfMqzufJ2V7duyuFPrWd
  281. // SIG // tdnhV/++tMV+9c8MnvCX/ivTO1IbGzgn9z9KMIID/zCC
  282. // SIG // AuegAwIBAgIQDekr8NTYKYgYMgUJXpp2iDANBgkqhkiG
  283. // SIG // 9w0BAQUFADBTMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO
  284. // SIG // VmVyaVNpZ24sIEluYy4xKzApBgNVBAMTIlZlcmlTaWdu
  285. // SIG // IFRpbWUgU3RhbXBpbmcgU2VydmljZXMgQ0EwHhcNMDMx
  286. // SIG // MjA0MDAwMDAwWhcNMDgxMjAzMjM1OTU5WjBXMQswCQYD
  287. // SIG // VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4x
  288. // SIG // LzAtBgNVBAMTJlZlcmlTaWduIFRpbWUgU3RhbXBpbmcg
  289. // SIG // U2VydmljZXMgU2lnbmVyMIIBIjANBgkqhkiG9w0BAQEF
  290. // SIG // AAOCAQ8AMIIBCgKCAQEAslAoSN3TaHqEGERmdV1+xLif
  291. // SIG // Yyb/PUOcfBE4ECVVc9l1J2n9TrkgXNMK+aAbKu1VViFh
  292. // SIG // 2B7b5Lwza8fv3aM3ZY4bkwy2Ux5cfGY1XwWKRf52Tt9T
  293. // SIG // gKKBIJ2uiFyiCPflMPnuIjdMQgrO38YfxNZV6YE/tVKj
  294. // SIG // LKoBevKiqo01/p/mXWoFnz1r47+WwP7MYPlA5wegROuB
  295. // SIG // UW6lKvK2ihAo7Y/cBqCGUJp7SggNMB3KEJ5r9+lYrgSp
  296. // SIG // QJmyKOiPFqw841NvS9M1nbVvZB2zliy7Ped56216+Rbm
  297. // SIG // Jq2v75lTt0Aslbh5qv7UUqspdH5C7DkeomoW5lm7JGjY
  298. // SIG // AIBDEIeAawIDAQABo4HKMIHHMDQGCCsGAQUFBwEBBCgw
  299. // SIG // JjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AudmVyaXNp
  300. // SIG // Z24uY29tMAwGA1UdEwEB/wQCMAAwMwYDVR0fBCwwKjAo
  301. // SIG // oCagJIYiaHR0cDovL2NybC52ZXJpc2lnbi5jb20vdHNz
  302. // SIG // LWNhLmNybDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAO
  303. // SIG // BgNVHQ8BAf8EBAMCBsAwJAYDVR0RBB0wG6QZMBcxFTAT
  304. // SIG // BgNVBAMTDFRTQTIwNDgtMS01NDANBgkqhkiG9w0BAQUF
  305. // SIG // AAOCAQEAh3hw2k5SASBb4HnJgjDE/bkZlr2RAMO9zc3G
  306. // SIG // 9A7Y//lNwDNiMBHF9XQb1JLeX5wgE7F8Rb5QzYPngBeD
  307. // SIG // pyeTZxNG+8q4mEEDzJtRWwWLf6hv8xtQGyQu8mmNbCL3
  308. // SIG // u8oWle0MdMBod9nrmWKHwXOQ+Il0eiOro5h7l7H3jylx
  309. // SIG // TS51G0hB2vC1DSBU1negl4Jjaf0Jz4rwdbsJm9n5EVUm
  310. // SIG // mmEyvnoCsHuGvqLDiyIseNE1drySc1z5ueZMFQojzOTS
  311. // SIG // 1DQuSUAVPA9geiTGpWbvls9w6z7n9A1+3NF8o3ZxacGc
  312. // SIG // T0cwNSGxoq8aYjwr2Y6qKgd72BizXHvinaVv/jyJrTCC
  313. // SIG // BBIwggL6oAMCAQICDwDBAIs8PIgR0T72Y+zfQDANBgkq
  314. // SIG // hkiG9w0BAQQFADBwMSswKQYDVQQLEyJDb3B5cmlnaHQg
  315. // SIG // KGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4wHAYDVQQL
  316. // SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAfBgNVBAMT
  317. // SIG // GE1pY3Jvc29mdCBSb290IEF1dGhvcml0eTAeFw05NzAx
  318. // SIG // MTAwNzAwMDBaFw0yMDEyMzEwNzAwMDBaMHAxKzApBgNV
  319. // SIG // BAsTIkNvcHlyaWdodCAoYykgMTk5NyBNaWNyb3NvZnQg
  320. // SIG // Q29ycC4xHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3Jh
  321. // SIG // dGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0
  322. // SIG // aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
  323. // SIG // CgKCAQEAqQK9wXDmO/JOGyifl3heMOqiqY0lX/j+lUyj
  324. // SIG // t/6doiA+fFGim6KPYDJr0UJkee6sdslU2vLrnIYcj5+E
  325. // SIG // ZrPFa3piI9YdPN4PAZLolsS/LWaammgmmdA6LL8MtVgm
  326. // SIG // wUbnCj44liypKDmo7EmDQuOED7uabFVhrIJ8oWAtd0zp
  327. // SIG // mbRkO5pQHDEIJBSfqeeRKxjmPZhjFGBYBWWfHTdSh/en
  328. // SIG // 75QCxhvTv1VFs4mAvzrsVJROrv2nem10Tq8YzJYJKCEA
  329. // SIG // V5BgaTe7SxIHPFb/W/ukZgoIptKBVlfvtjteFoF3BNr2
  330. // SIG // vq6Alf6wzX/WpxpyXDzKvPAIoyIwswaFybMgdxOF3wID
  331. // SIG // AQABo4GoMIGlMIGiBgNVHQEEgZowgZeAEFvQcO9pcp4j
  332. // SIG // UX4Usk2O/8uhcjBwMSswKQYDVQQLEyJDb3B5cmlnaHQg
  333. // SIG // KGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4wHAYDVQQL
  334. // SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAfBgNVBAMT
  335. // SIG // GE1pY3Jvc29mdCBSb290IEF1dGhvcml0eYIPAMEAizw8
  336. // SIG // iBHRPvZj7N9AMA0GCSqGSIb3DQEBBAUAA4IBAQCV6AvA
  337. // SIG // jfOXGDXtuAEk2HcR81xgMp+eC8s+BZGIj8k65iHy8FeT
  338. // SIG // LLWgR8hi7/zXzDs7Wqk2VGn+JG0/ycyq3gV83TGNPZ8Q
  339. // SIG // cGq7/hJPGGnA/NBD4xFaIE/qYnuvqhnIKzclLb5loRKK
  340. // SIG // JQ9jo/dUHPkhydYV81KsbkMyB/2CF/jlZ2wNUfa98VLH
  341. // SIG // vefEMPwgMQmIHZUpGk3VHQKl8YDgA7Rb9LHdyFfuZUnH
  342. // SIG // UlS2tAMoEv+Q1vAIj364l8WrNyzkeuSod+N2oADQaj/B
  343. // SIG // 0jaK4EESqDVqG2rbNeHUHATkqEUEyFozOG5NHA1itwqi
  344. // SIG // jNPVVD9GzRxVpnDbEjqHk3Wfp9KgMIIEyTCCA7GgAwIB
  345. // SIG // AgIQaguZT8AA3qoR1NhAmqi+5jANBgkqhkiG9w0BAQQF
  346. // SIG // ADBwMSswKQYDVQQLEyJDb3B5cmlnaHQgKGMpIDE5OTcg
  347. // SIG // TWljcm9zb2Z0IENvcnAuMR4wHAYDVQQLExVNaWNyb3Nv
  348. // SIG // ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29m
  349. // SIG // dCBSb290IEF1dGhvcml0eTAeFw0wMDEyMTAwODAwMDBa
  350. // SIG // Fw0wNTExMTIwODAwMDBaMIGmMQswCQYDVQQGEwJVUzET
  351. // SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
  352. // SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
  353. // SIG // aW9uMSswKQYDVQQLEyJDb3B5cmlnaHQgKGMpIDIwMDAg
  354. // SIG // TWljcm9zb2Z0IENvcnAuMSMwIQYDVQQDExpNaWNyb3Nv
  355. // SIG // ZnQgQ29kZSBTaWduaW5nIFBDQTCCASAwDQYJKoZIhvcN
  356. // SIG // AQEBBQADggENADCCAQgCggEBAKKEFVPYCzAONJX/OhvC
  357. // SIG // 8y97bTcjTfPSjOX9r/3FAjQfJMflodxU7H4CdEer2zJY
  358. // SIG // FhRRKTjxfrK0jDpHtTlOblTCMQw6bfvNzctQnBuup9jZ
  359. // SIG // SiY/tcXLj5biSfJt2OmWPt4Fz/CmVTetL2DNgGFCoUlU
  360. // SIG // Sg8Yt0vZk5kwWkd1ZLTTu922qwydT7hzOxg6qrSHjLCI
  361. // SIG // sE1PH04RtTOA3w06ZG9ExzS9SpObvKYd+QUjTmApj8wq
  362. // SIG // 8oSama2o2wpwe9Y0QZClt2bHXBsdozMOm1QDGj+YkLjM
  363. // SIG // 5z0EdEMcj/c55rOsSHprKg5iAWE5dm79PpgHSxTxAUb9
  364. // SIG // FQDgR9pP5AXkgCUCAQOjggEoMIIBJDATBgNVHSUEDDAK
  365. // SIG // BggrBgEFBQcDAzCBogYDVR0BBIGaMIGXgBBb0HDvaXKe
  366. // SIG // I1F+FLJNjv/LoXIwcDErMCkGA1UECxMiQ29weXJpZ2h0
  367. // SIG // IChjKSAxOTk3IE1pY3Jvc29mdCBDb3JwLjEeMBwGA1UE
  368. // SIG // CxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQD
  369. // SIG // ExhNaWNyb3NvZnQgUm9vdCBBdXRob3JpdHmCDwDBAIs8
  370. // SIG // PIgR0T72Y+zfQDAQBgkrBgEEAYI3FQEEAwIBADAdBgNV
  371. // SIG // HQ4EFgQUKVy5G7bNM+67nll99+XKLsQNNCgwGQYJKwYB
  372. // SIG // BAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgFG
  373. // SIG // MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
  374. // SIG // ggEBAEVY4ppBf/ydv0h3d66M2eYZxVe0Gr20uV8CoUVq
  375. // SIG // OVn5uSecLU2e/KLkOIo4ZCJC37kvKs+31gbK6yq/4BqF
  376. // SIG // fNtRCD30ItPUwG2IgRVEX2SDZMSplCyK25A3Sg+36NRh
  377. // SIG // j3Z24dkl/ySElY0EVlSUoRw6PoK87qWHjByMS3lftUn6
  378. // SIG // XjJpOh9UrXVN32TnMDzbZElE+/vEHEJx5qA9Re5rAJ+s
  379. // SIG // Qr26EbNW5PvVoiqB2B9OolW+J49wpqJsG/9UioK8gUum
  380. // SIG // obFmeqkXp8sGwEfrprPpMRVTPSoEv/9zSNyLJ0P8Y+ju
  381. // SIG // JIdbvjbR6DH1Mtle33l6ujCsaYZK+4wRvxuNVFkwggTh
  382. // SIG // MIIDyaADAgECAgphDn2nAAAAAABIMA0GCSqGSIb3DQEB
  383. // SIG // BQUAMIGmMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz
  384. // SIG // aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
  385. // SIG // ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYDVQQL
  386. // SIG // EyJDb3B5cmlnaHQgKGMpIDIwMDAgTWljcm9zb2Z0IENv
  387. // SIG // cnAuMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWdu
  388. // SIG // aW5nIFBDQTAeFw0wMzEwMjUwNTU5MTRaFw0wNTAxMjUw
  389. // SIG // NjA5MTRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX
  390. // SIG // YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
  391. // SIG // VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xHjAcBgNV
  392. // SIG // BAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJ
  393. // SIG // KoZIhvcNAQEBBQADggEPADCCAQoCggEBALIthwm1XN9V
  394. // SIG // metSYufT9ONFcakyv5TyDukNrf6dxwRqWE6cpNHYREH7
  395. // SIG // ZH4PZe7IF9pN29nWULQMVltsFohLvwPuUEiD7E+Ik5pR
  396. // SIG // 45QZf/qzl6XOYG2f3UyTOL3NNFlx5obO6YOZoJa46uBE
  397. // SIG // WxNCuTpITlRy9wiW5ADEggF2Q69hwtv65cXwAhPd+DW0
  398. // SIG // Dw1SNkZ0Q7GiypzdfpnxNRF3+xUmAY7P4LgEeCoV/XLG
  399. // SIG // YHaRDOdPshgYG2mJtPEvIRtm6sqRx0YNuRdYcVhWhmUj
  400. // SIG // 0QIyrmSgb9pSlf373Y009cEMNaNH1+kbavoPRbToMh1w
  401. // SIG // Gb3R+eVkH+uHN+pv1A2Dj/0CAwEAAaOCAUAwggE8MA4G
  402. // SIG // A1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQUgo+nF2RkckTV
  403. // SIG // MK4WhOJTkMs+ntQwEwYDVR0lBAwwCgYIKwYBBQUHAwMw
  404. // SIG // gakGA1UdIwSBoTCBnoAUKVy5G7bNM+67nll99+XKLsQN
  405. // SIG // NCihdKRyMHAxKzApBgNVBAsTIkNvcHlyaWdodCAoYykg
  406. // SIG // MTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAcBgNVBAsTFU1p
  407. // SIG // Y3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWlj
  408. // SIG // cm9zb2Z0IFJvb3QgQXV0aG9yaXR5ghBqC5lPwADeqhHU
  409. // SIG // 2ECaqL7mMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9j
  410. // SIG // cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
  411. // SIG // L0NvZGVTaWduUENBLmNybDANBgkqhkiG9w0BAQUFAAOC
  412. // SIG // AQEASkjcMrB6Zz+LKwG0DPXbeUFd4Dftv1Fzf9b5fmxt
  413. // SIG // f5+8paRIHqjj7ab1PIZqkVlM1FMU697uzcPckKMIsYtF
  414. // SIG // Ov1qcPDOBAY2LjC0j0yr6t1DWc2DoNfupEmuECRPmf/V
  415. // SIG // Avnshkyl2CLoARct6xOQmZoRgDMMGYh+BhnUMe1MyX67
  416. // SIG // JMexveVUO+p3EImHbOCcgI3SEORKl6nqVxnXeCsNmzUn
  417. // SIG // sTi+0r+tx/DmbVqfEPbK8fLgMKsBphPItjlkvQkJ7Yu2
  418. // SIG // FBhqeinGdEs7R/EUycveF92yXNjMOYc8OUjFMHyOdVfu
  419. // SIG // 7RugDYVyNWRJvqFJOOKanEp8gmQNAXhfVv6IdDGCBIsw
  420. // SIG // ggSHAgEBMIG1MIGmMQswCQYDVQQGEwJVUzETMBEGA1UE
  421. // SIG // CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
  422. // SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSsw
  423. // SIG // KQYDVQQLEyJDb3B5cmlnaHQgKGMpIDIwMDAgTWljcm9z
  424. // SIG // b2Z0IENvcnAuMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29k
  425. // SIG // ZSBTaWduaW5nIFBDQQIKYQ59pwAAAAAASDAJBgUrDgMC
  426. // SIG // GgUAoIGoMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE
  427. // SIG // MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMG
  428. // SIG // CSqGSIb3DQEJBDEWBBSNTuC/chOxlDoGed4b6euikPl6
  429. // SIG // BzBIBgorBgEEAYI3AgEMMTowOKAWgBQAcwBlAHQAdABl
  430. // SIG // AHgAdAAuAGoAc6EegBxodHRwOi8vb2ZmaWNlLm1pY3Jv
  431. // SIG // c29mdC5jb20gMA0GCSqGSIb3DQEBAQUABIIBAJy39LKK
  432. // SIG // hQZSFDy8OWWeJFGoBycNpGvRrk6CUS9tfROLK4lbSKH4
  433. // SIG // qlT7QHRI5JoPv4yYWZdmqWaU1YdCvNvirs4YTsadlgiR
  434. // SIG // 5QeXQ/+x60Dr2CUC9jaQqDhV25f9VvIl3mCznNGUt0Tu
  435. // SIG // N3wI8Sbpf6yeviV/POhSROE2Ijk+8HridlFyzb3iq6in
  436. // SIG // in0oIBSG4Q1LzIgLFp9IFncKmuRbd4TT/Qzmx3ebMxuu
  437. // SIG // jo0fxOCZgnidhZedrzAdD0BaekFgz2j732rPhFyxLmVf
  438. // SIG // 7AT2dccDkl5TnJI25aydEUkl9rpTkMiP7dJ54HSOb2/1
  439. // SIG // yD4wZG7phZRpfBfAOTILWhahATihggH/MIIB+wYJKoZI
  440. // SIG // hvcNAQkGMYIB7DCCAegCAQEwZzBTMQswCQYDVQQGEwJV
  441. // SIG // UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xKzApBgNV
  442. // SIG // BAMTIlZlcmlTaWduIFRpbWUgU3RhbXBpbmcgU2Vydmlj
  443. // SIG // ZXMgQ0ECEA3pK/DU2CmIGDIFCV6adogwDAYIKoZIhvcN
  444. // SIG // AgUFAKBZMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEw
  445. // SIG // HAYJKoZIhvcNAQkFMQ8XDTA0MDQxNjA5MzcxNVowHwYJ
  446. // SIG // KoZIhvcNAQkEMRIEEMnrg4ejZ6VxPyKVXNDuAiEwDQYJ
  447. // SIG // KoZIhvcNAQEBBQAEggEASu7VuIMcrt5OBg6zJiiOX21v
  448. // SIG // Eg+OJzExBfDasWpOyovCw6oPmBOwl2t1MwnJyq7wSsv6
  449. // SIG // 54Em95KeqmEs0/RlGNqAVcZAHFK1xsNyIuXQHIoQsVTz
  450. // SIG // UgousaMlVJ/nas2mfe9Is2+FfBgnMPNHGfrVlxPUyrsN
  451. // SIG // G/n5gJLRFYcqYBVEZIAnXW9qybQUy54ptTiMhMIsvZMa
  452. // SIG // 42vOCb6SwaX7OneqPHEWWtIkHjkIBqt/LFqOH3gEK7xs
  453. // SIG // eSt22g1Qa9kXlx8sVke2kb0UiVmMAOgHZS6Ghc5XlTBH
  454. // SIG // ogPPPDLxoWvw21tpWBTDZudnHpHiK3O4N1Wu1YwZppZs
  455. // SIG // zU/+vDsYCQ==
  456. // SIG // End signature block
  457.